const log4js = require('log4js');
const fs = require('fs');
const path = require('path');
let helper = {};

//加载配置文件
let objConfig = JSON.parse(fs.readFileSync('./util/log4js.json', "utf8"));

if (objConfig.appenders) {
    let baseDir = objConfig['customBaseDir'];
    let defaultAtt = objConfig['customDefaultAtt'];

    for (let i = 0, j = objConfig.appenders.length; i < j; i++) {
        let item = objConfig.appenders[i];
        if (item["type"] === "console") {
            continue;
        }
        if (defaultAtt != null) {
            for (let att in defaultAtt) {
                if (item[att] == null) {
                    item[att] = defaultAtt[att];
                }
            }
        }
        if (baseDir != null) {
            if (item["filename"] == null) {
                item["filename"] = baseDir;
            } else {
                item["filename"] = baseDir + item["filename"];
            }
        }
    }
}

//目录创建完毕，才加载配置，不然会出异常
log4js.configure(objConfig);

let logDebug = log4js.getLogger('logDebug');
let logInfo = log4js.getLogger('logInfo');
let logWarn = log4js.getLogger('logWarn');
let logErr = log4js.getLogger('logErr');

helper.writeDebug = (msg) => {
    if (msg == null) {
        msg = "";
    }
    logDebug.debug(msg);
};

helper.writeInfo = (msg) => {
    if (msg == null) {
        msg = "";
    }
    logInfo.info(msg);
};

helper.writeWarn = (msg) => {
    if (msg == null) {
        msg = "";
    }
    logWarn.warn(msg);
};
helper.writeErr = (msg, exp) => {
    if (msg == null) {
        msg = "";
    }
    if (exp != null) {
        msg += "\r\n" + exp;
    }
    logErr.error(msg);
};
exports.helper = helper;